/* eslint-disable @typescript-eslint/ban-ts-comment */
import { createApp } from 'vue'
// 暗黑模式
import 'element-plus/theme-chalk/dark/css-vars.css'
import App from './App.vue'
// 引入模板的全局样式
import '@/style/index.scss'
import gloalComponents from '@/components'
// 引入element-plus插件与样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// 配置国际化
//@ts-expect-error
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
// i18n插件
import i18n from '@/i18n/index'
// svg插件需要配置代码
import 'virtual:svg-icons-register'
import router from './router'
import pinia from './store'
// 因为状态管理使用的是setup的方式构建所以我们重写一个$reset并挂载到pinia中
pinia.use(({ store }) => {
  const initialState = JSON.parse(JSON.stringify(store.$state))
  store.$reset = () => {
    store.$patch(initialState)
  }
})

// 引入路由鉴权文件
import './permission'
// 获取应用实例对象
const app = createApp(App)
// 安装element-plus
app.use(ElementPlus, {
  locale: zhCn,
})

// 安装自定义插件
app.use(gloalComponents)
app.use(pinia)
app.use(router)
app.use(i18n)
app.mount('#app')